<?php
/**
 * 临时文件清理脚本
 * 清理超过指定天数的临时HTML文件
 */

// 配置
$tempDir = __DIR__ . '/temp';
$daysToKeep = 2; // 保留最近几分钟的文件
$dryRun = false; // true: 只显示将删除的文件，不实际删除

echo "=== 临时文件清理脚本 ===\n\n";
echo "临时目录: {$tempDir}\n";
echo "保留天数: {$daysToKeep}\n";
echo "模式: " . ($dryRun ? "预览模式（不删除）" : "删除模式") . "\n\n";

// 检查目录是否存在
if (!is_dir($tempDir)) {
    echo "✓ 临时目录不存在或已清空\n";
    exit(0);
}

// 获取所有HTML文件
$files = glob($tempDir . '/search_result_*.html');

if (empty($files)) {
    echo "✓ 没有临时文件需要清理\n";
    exit(0);
}

echo "找到 " . count($files) . " 个临时文件\n\n";

$cutoffTime = time() - ($daysToKeep  * 60);
$deletedCount = 0;
$keptCount = 0;
$totalSize = 0;

foreach ($files as $file) {
    $fileTime = filemtime($file);
    $fileAge = (time() - $fileTime) / 86400; // 天数
    $fileSize = filesize($file);
    
    if ($fileTime < $cutoffTime) {
        $totalSize += $fileSize;
        echo sprintf(
            "✗ 删除: %s (%.1f天前, %s)\n",
            basename($file),
            $fileAge,
            formatBytes($fileSize)
        );
        
        if (!$dryRun) {
            if (unlink($file)) {
                $deletedCount++;
            } else {
                echo "  错误: 删除失败\n";
            }
        } else {
            $deletedCount++;
        }
    } else {
        $keptCount++;
        echo sprintf(
            "✓ 保留: %s (%.1f天前, %s)\n",
            basename($file),
            $fileAge,
            formatBytes($fileSize)
        );
    }
}

echo "\n=== 清理完成 ===\n";
echo "删除文件: {$deletedCount} 个\n";
echo "保留文件: {$keptCount} 个\n";
echo "释放空间: " . formatBytes($totalSize) . "\n";

if ($dryRun) {
    echo "\n提示: 当前为预览模式，未实际删除文件\n";
    echo "要实际删除，请修改脚本中的 \$dryRun = false;\n";
}

/**
 * 格式化字节大小
 */
function formatBytes($bytes, $precision = 2) {
    $units = ['B', 'KB', 'MB', 'GB'];
    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
    $pow = min($pow, count($units) - 1);
    $bytes /= pow(1024, $pow);
    return round($bytes, $precision) . ' ' . $units[$pow];
}

